Filtering the Noise

‍ Filtering Acceleration Data from Accelerometers and Explicit Dynamics

A walkthrough of the slide deck of the same name

Hi. My name is Joe McFadden. I've spent more than forty years as an engineer, an educator, and an investigator of failures — mostly the kind that arrive as noisy time-history records from drop towers, crash sleds, and explicit dynamics solvers.

What follows is a walkthrough of twenty-seven slides. I've tried to make each stop stand on its own. If you only have twenty minutes and you want the part that changes what you do tomorrow morning, that's slides 10 through 19 — the zero-phase section and the order section. Everything else is the case for why those slides matter.

Slide 1 · The title

Filtering Acceleration Data — Accelerometers and Explicit Dynamics. Practical choices, trade-offs, and pitfalls.

Three names sit at the bottom of that slide and they deserve saying out loud, because almost nothing here is mine alone. The methodology follows Diehl, Carroll and Nagaraj. The standard is SAE J211. And the shock response spectrum algorithms follow the published work of Tom Irvine, at vibrationdata.com. What I've added is the assembly, the verification, and forty years of watching where people go wrong.

Notice the subtitle. Not "best practices." Trade-offs. There is no filter setting in this deck that is free. Every one of them costs you something, and the entire discipline consists of knowing what you just paid.

Slide 2 · The overview — the map of the whole deck, in six stops

One: why acceleration is the hard one. Two: the three corruptions, and the mesh song. Three: the good listener's pipeline — the order of operations. Four: how filtering actually works, the Butterworth shape and the multiplication in the frequency domain. Five: the zero-phase deep dive — forward and backward, and how it compares to minimum phase. And six: order, the CFC standard, honest trade-offs, and the investigations still open.

Keep that map in mind. Everything that follows hangs from it. If you ever feel lost, ask yourself which of those six you're standing in.

Slide 3 · The problem — why acceleration is the hard one

Force equals mass times acceleration is the entire explicit engine. An explicit solver marches Newton's second law forward in very small steps, and acceleration is the quantity it actually computes. Velocity is downstream. Displacement is downstream. Deformation, contact, failure — all downstream. Acceleration is the primary output. Everything else is an integral of it.

And yet. Ask a room of experienced analysts what the acceleration was, and watch what happens. You'll hear that it's too noisy to report. You'll hear that the deformation looks right, the failure modes look right, the energy balance closed. And that reassurance is usually true. But sit for a moment with the strangeness of it: the one quantity the entire method is built upon is the one quantity the field has quietly agreed not to quote.

The right side of this slide is why. A true 50 g half-sine, 6 ms long, buried under 22 kHz element ringing, arrives at a raw peak of 901.88 g. Eighteen times the physics.

For products that get dropped for a living, the question is always fragility — what did that component actually feel? That is an acceleration question, and there's no way around it. So neither answer on the table is acceptable. You cannot report 900 g. And you cannot decline to quote acceleration. That gap, between eighteen times too big and refusing to answer, is why this deck exists.

Slide 4 · The edit arrives garbled — three distinct corruptions

Before I name them, here's the idea underneath everything that follows. We poke systems to understand them. A child pushes the new toy. A mechanic taps the casting. We drop a product onto simulated concrete and ask one node to write down everything it felt. And the answer is never the original poke. The system edits it. Every surface, every bond, every element in the mesh reflects it, scatters it, rewrites it according to the system's structure, its state, and its history. What reaches you is the edited answer. Learning to read the edit is most of what analysis actually is.

That edit arrives garbled in three distinct ways, and — this is the part people miss — each one gets a completely different response.

First, the solver's breathing. An explicit solver advances only as far as the smallest, stiffest element will safely allow. That's the Courant-Friedrichs-Lewy condition, the CFL limit. When contact engages, when a corner stiffens, when an element distorts, the time step shrinks. The result is an irregular heartbeat in your output clock. That is not corruption. That is the solver working hardest exactly where the most is happening, and later in this deck I'll argue it's a diagnostic we're throwing away.

Second, the mesh's own voice. An elastic impact model is, mathematically, a box of tiny springs and masses. Every one of those springs rings at its own natural frequency, set by element size and stiffness — often hundreds of kilohertz, and often far larger in amplitude than the physics you care about. Your 50 g impact arrives wearing a coat of fuzz 1,000 g thick.

Third, your sampling. And this one is different in kind, because the first two are honest signals you can choose to remove. Coarse output does not make the ringing disappear. It folds it. A 100 kHz ring, lazily sampled, can masquerade as a smooth 1 kHz wave — right in the middle of the band you trust. Noise announces itself. Drift can be spotted. Clipping leaves flat-topped fingerprints. Aliasing leaves no evidence at all. Once it's in the record, no filter, no algorithm, no expert can remove it, because the record itself has become a plausible lie.

The only defense is to never let it in. Capture every increment the solver computed, however large the file. Storage is cheap. A confident wrong answer about a component going into a million devices is not.

Twice is the mathematical minimum. Ten times is the honest engineering number if you want a peak to still look like a peak.

Slide 5 · The mesh's own voice — the Mesh Song

There's a cartoon on this slide, and I put it there on purpose, because the idea is genuinely playful and I've found people remember it. Brain Buddy is conducting. Two meshed handsets are singing. The frequency response is up on the monitor behind them. Poke it, and it sings — wide range, many modes, one great song.

That's not a joke about the physics; that is the physics. Every element mode contributes a note. The chord you hear back is the mesh describing itself to you.

So before you quiet the ringing, listen to it. The frequency of the song is a free mesh diagnostic. It tells you about element size and stiffness. It tells you whether the mesh can even carry the frequencies your fragility question requires — because if your question needs content up to 5 kHz and the mesh's lowest voice is at forty, you have a mesh problem, not a filtering problem, and no amount of careful post-processing will fix it.

Filter the record. Never the notebook.

Slide 6 · The good listener — an order of operations you can defend

Six steps, and each one protects against something the next step cannot fix. That's why the order matters and why I've never found a way to shuffle it.

One. Capture every solver increment. Aliasing at the source is irreversible; there is no later step that undoes it.

Two. Restore the clock. Put the record onto a uniform grid at the finest supported physical step, and interpolate with a straight line — linear interpolation, nothing fancier. And I want to defend that, because it looks like laziness and it isn't. Higher-order interpolation invents overshoot near sharp events. It manufactures a peak that the solver never computed. Inventing is the one thing a listener must never do.

Three, and this one is optional but I'd like it to become standard. Take a spectral pre-report while the Mesh Song still exists. Once you've filtered, the song is gone forever. Thirty seconds of work now, at the only moment the information exists.

Four. Guard filter, then decimate. Never thin before filtering.

Five. Analysis filter, applied zero-phase, chosen from the question you're actually asking.

Six. Save as a new record. Never overwrite the original. The message and the listening notes, kept together, forever.

Slide 7 · The filter function — the Butterworth magnitude, and what order actually buys

Here is the shape itself. A Butterworth low-pass with a cutoff at 1 kHz, drawn for order 2, order 4 and order 8. Below the cutoff it's essentially flat — gain of one, the signal passes untouched. Approaching the cutoff it bends. Above it, it rolls off.

Two precise things about that picture. First, look where the three curves cross: at the cutoff frequency, every one of them is at −3 dB. That's the definition, and it's true regardless of order. Order does not move the −3 dB point. Second, the asymptotic slope is roughly 6 dB per octave per order — so order 2 rolls off at 12 dB per octave, order 4 at 24, order 8 at 48.

Now, a correction to something I used to say, and something you'll hear said in a lot of rooms. It is tempting to explain the soft knee by saying a filter can't drop to zero too quickly or it becomes unstable. That's not right. A Butterworth is unconditionally stable at any order — all of its poles sit in the left half plane by construction. The reason you cannot build a brick wall is realizability, not stability. A response that is perfectly flat up to 1,000 Hz and exactly zero above it has an impulse response that is a sinc function: infinitely long, and non-causal — it responds before the input arrives. You cannot build that with any finite number of poles and zeros. So every real filter has to make the transition gradually.

And read the headline on this slide carefully, because it's the thesis of the whole middle section: steeper knee in frequency, longer impulse response in time. Those two things arrive together. Always. We'll pay that bill on slides 18 and 19.

Slide 8 · The filter function again — the J211 CFC classes drawn as filter shapes

Four curves: CFC 60, CFC 180, CFC 600, CFC 1000. And there's a dot on each one marking where its net response passes through −3 dB — 100 Hz, 300 Hz, 1,000 Hz, and 1,667 Hz respectively. Those are the CFC numbers multiplied by 5/3, and they land exactly on the marks.

I want to be precise about what's plotted, because this is a place where well-meaning figures mislead. This is not a four-pole filter run once. It's the net response of a two-pole Butterworth run forward and then backward — which is what J211 actually specifies. That's why the curve you're looking at is the magnitude squared, and it's why the −3 dB points land where the standard says they should rather than somewhere nearby.

The practical reading of this slide is simple. These four shapes are the vocabulary the crash and impact world speaks in. When you say "CFC 600," you are pointing at the third curve on this chart. And the reason you must state the class when you quote a number is right here in front of you: those four curves keep wildly different amounts of the record.

Slide 9 · How filtering works — Y(f) = X(f) · H(f)

Three panels, stacked, and they tell the whole frequency-domain story in one picture.

The top panel is the raw spectrum — X(f). Down at the low end, below 300 Hz, is the 6 ms pulse. Way up at 22 kHz is the mesh song, standing up out of the noise floor like a spike. Two populations, cleanly separated in frequency, hopelessly tangled in time.

The middle panel is the filter — the magnitude of H(f). Flat through the pulse band. Falling away hard above the cutoff.

The bottom panel is simply the two multiplied together, frequency by frequency. The mesh song is gone. The pulse band is untouched.

That's it. That's what a filter does. Filtering is multiplication in the frequency domain. Everything difficult about this subject comes from the fact that multiplication in frequency is convolution in time — and convolution is what smears your pulse. Hold onto that sentence. It's the hinge between the easy half of this deck and the hard half.

Slide 10 · Zero-phase filtering — the most important habit in this discipline

Here's the problem it solves. A digital IIR filter is a recursion. It computes today's output from today's input and from inputs and outputs it has already seen. There is no future anywhere in the equation. That's causality, and it's not optional for a real-time device.

But causality has a price. Every frequency comes out delayed. And it's worse than a uniform shift, which you could at least correct by subtracting a constant. Content well below the cutoff comes through nearly on time. Content near the cutoff comes through noticeably later. So a pulse doesn't simply move — its low-frequency core and its high-frequency edges get separated. It smears, and it leans. The very shape you set out to measure changes quietly on the way through.

Now the remedy, and it is elegant and it is exact.

Run the same filter coefficients forward through the record. It comes out smoothed and late. Now reverse the array — no new mathematics, just read it backwards — and run the same coefficients again. Going forward the filter lagged. Going backward it lags again, in the reversed record. But a lag in a reversed record is a lead in real time. Reverse it back, and the two errors, equal and opposite, have cancelled at every single frequency.

What survives is the magnitude squared — purely real, phase identically zero. And I want to stress the word: identically. Not small. Not negligible. Zero. This is an identity, not an approximation.

Slide 11 · Forward, then backward — how zero-phase is built, step by step

CFC 180, using the SAE J211 coefficients. Three panels, and this is the mechanism made visible.

The top panel is the raw record — the grey ringing with a peak at 901.88 g, and running through the middle of it, almost invisible at this scale, the navy trace of the true 50 g pulse. Eighteen to one. That ratio is the whole problem in one picture.

The middle panel is after the forward pass only. And look at what happened: the amplitude came back beautifully. The filtered curve reaches essentially 50 g. If all you checked was the peak value, you would sign this off. But there are two dotted vertical lines on that panel, and they don't coincide. The true peak is at 13 ms. The filtered peak has landed to the right of it. The filter did its job on amplitude and stole time doing it.

The bottom panel is after the backward pass — which is to say, the finished zero-phase result. The lag has run the other way and cancelled. The peak is back at 13.000 ms, and the filtered curve sits directly on top of the true pulse.

Two passes. One design. Flip, run, flip back. That is the entire trick, and it costs you nothing but a second traverse of an array you already have in memory.

Slide 12 · Zero-phase effects in the time domain — peak timing is the whole point

Still CFC 180. Two panels here. The left one is at full scale, and it exists to keep you honest about what you're dealing with: the raw envelope swinging ±900 g, and the three filtered traces lying flat along the zero line, indistinguishable from each other at this magnification. The pulse you care about is about 5% of what the record shows. That's the working condition.

The right panel is the zoom, and it's the one to look at. Now you can resolve them. The grey true pulse. The teal zero-phase result, sitting directly on top of it — you can barely tell them apart, which is precisely the point. And the orange forward-only result, peaking about 0.6 ms to the right, marked with an arrow.

Look at the heights of those two peaks. They're the same. The forward-only trace reaches the same amplitude as the zero-phase trace. Nothing about the number 50 tells you that one of them is in the wrong place.

On a 6 ms pulse, 0.6 ms is 10% of the event. If you're overlaying two channels, or correlating simulation against a physical accelerometer, or windowing an event to compute delta-V, that error is now in your comparison and there is nothing in the data that flags it.

Slide 13 · The measured verification case

This is the table I'd point at if I only got one slide. A 50 g half-sine, 6 ms, under about 900 g of 22 kHz ringing, filtered at CFC 180.

CasePeak (g)Peak time (ms)True pulse (we built it)50.0013.000Raw record901.8810.400One pass, forward only50.0713.625Two passes, zero-phase49.9213.010

The raw record is unusable — the peak isn't even the pulse, it's a ring crest. Read the two forward-only numbers side by side: the amplitude is right to within a seventh of a percent, and the timing is 625 microseconds late. The zero-phase result gets both — amplitude right, timing right, an error of one hundredth of a millisecond.

Now the sentence at the bottom, which I've sharpened since earlier versions of this deck because I had it too broad. Single-pass amplitude looks perfect. Nothing announces the shift. That silent error corrupts peak timing, channel overlays, event-windowed delta-V, and any dual-channel comparison. But full-record delta-V is largely unaffected — a pure time shift does not change the integral of the whole file. Timing is the casualty, not the area. Be precise about that, because if you overstate the damage, someone will find the one case where it doesn't apply and discount the rest of what you said.

Slide 14 · Minimum phase versus zero phase — two entirely different contracts with time

Same prototype — CFC 180. Three stacked panels, and I'd like to walk each one.

The magnitude panel, on top. Orange is the causal, single-pass filter. Teal is the zero-phase, two-pass result. The teal is visibly steeper, and its −3 dB point has moved down in frequency. That's not a bug — it's arithmetic. The second pass multiplies the magnitude by itself, so what was 0.707 at the cutoff becomes 0.5. Two passes always give you a lower effective cutoff than the one you designed. Remember that; it comes back in a moment.

The phase panel, in the middle. Orange sweeps down through 90 degrees, past 180. Every frequency leaned by a different amount. Teal is a flat line on zero. Not approximately — exactly.

And the group delay panel at the bottom, which is the one I'd like you to actually stare at, because it converts the abstraction into a number you can use. Group delay is how much each frequency gets postponed. The orange curve starts around 602 microseconds at DC, humps up slightly, and falls away above the cutoff. Teal is flat on zero across the whole band.

Now connect it to the last slide. 602 microseconds of group delay at low frequency. 625 microseconds of measured peak shift. Those are the same number. For a pulse whose energy sits well below the cutoff, the peak shift simply is the low-frequency group delay. That panel is not a decoration — it predicts the table.

Slide 15 · Minimum phase versus zero phase, as impulse responses — why zero-phase needs the future

Two pictures side by side, same time axis.

On the left, the minimum-phase impulse response. It's zero for all negative time, rises after the impulse, rings a little, decays. All of its energy lives at or after t = 0. That is what causal looks like drawn on paper.

On the right, the zero-phase impulse response. It is symmetric about t = 0. There is as much energy before the impulse as after it. Mathematically it's the autocorrelation of the causal response — which is exactly what running the filter forward and then backward produces.

And now the honesty of the method is visible. To produce an output at time t, that symmetric response has to reach into samples that haven't happened yet. So zero-phase is not a clever trick that gets something for nothing. It buys perfect timing by spending the future, and you can only spend the future when the whole record already exists on disk. It is legal on a file. It is impossible on a live controller.

Slide 16 · The two side by side, as a table

The reference version of what I just described.

PropertyMinimum phaseZero phaseCausalityCausal — real-time is fineNon-causal — post-processing onlyPhaseTied to magnitude via the Hilbert relation; you don't choose itIdentically zeroGroup delayFrequency-dependent, always positiveZero at all frequenciesMagnitude (same design)Magnitude of HMagnitude squared — steeper, lower effective cutoffPeak timing on shocksDelayed and smearedPreservedTypical useLive control and data acquisitionCrash and impact analysis, offline

That last row is the one that keeps people out of trouble. Both columns are correct engineering. They are correct for different jobs. The mistake is never "using minimum phase" — it's using minimum phase on a file and then quoting a peak time.

Slide 17 · Zero-phase, practical rules — what a good listener never forgets

Six of them.

  1. It is a manner, not a step. Zero-phase isn't a box in the pipeline; it's how every filter in the chain gets applied — guard, analysis, CFC, all of them. In MDSP it's enforced rather than offered.

  2. Same coefficients both ways. One design. Flip the array, run again, flip back. Resist the urge to design a second filter for the return trip; the cancellation depends on them being identical.

  3. Validate the edge padding. I've rewritten this rule, because I had it too confidently. The padding scheme has to be validated for the record type. Odd reflection, which is the usual default and which works nicely on records that settle to a constant, misbehaves badly on a record that ends in the middle of ringing — it can extrapolate an enormous offset and hand you a huge artifact at the end of your file. However you pad, the first and last filter lengths of any zero-phase result remain suspect. Look at them before you quote them.

  4. Post-processing only. It uses the future.

  5. Never on the SRS oscillator. This one has bitten good engineers. A shock response spectrum oscillator is also a recursion, and it superficially looks like a filter you could run both ways. Do not. That recursion is a mechanical model — a little single-degree-of-freedom system standing in for the thing you're protecting. Its lag isn't a numerical artifact; its lag is the physics of a real oscillator responding to a real input. Cancel it and you've built something that responds before it's struck.

  6. Report the policy. State whether zero-phase was used. A peak time without that note is incomplete.

Slide 18 · Order and smearing — order is not a smearing remedy

This slide corrects something I had wrong in earlier versions of this material, and I'd rather say so plainly than quietly fix it, because the wrong version is intuitive and it's widely repeated.

The wrong version goes: a higher-order filter is closer to ideal, so it smears less. That is backwards.

Two panels. On the left, the benefit: Butterworth magnitude at orders 2, 4 and 8, same cutoff. The transition band gets sharper with order. That part is true and it's why we reach for higher orders.

On the right, the cost: the impulse responses of those same three filters. Order 2 rises, settles, done. Order 8 is later, broader, and swings well below zero before it recovers. As order goes up, the poles move closer to the imaginary axis, the Q of each section rises, and the impulse response gets longer and more oscillatory. And since filtering in time is convolution with that impulse response, a longer, ringier impulse response means more time-domain smearing, not less.

So here is the correct statement. Cutoff decides how much of the pulse you attenuate. Order decides selectivity — how sharply you separate what you keep from what you discard. And the price of selectivity is paid in the time domain, as overshoot and undershoot and duration. You trade frequency smearing for time smearing. You do not eliminate either.

That's the time-frequency uncertainty relation, and it is not a limitation of Butterworth filters or of digital implementations. It's a property of the world.

Slide 19 · Order and smearing — the numbers, so this isn't just a story

Butterworth at 1 kHz. The column labelled t₉₉ is the time required to contain 99% of the impulse energy — a fair measure of how long the filter keeps talking after you poke it.

Ordert₉₉ (ms)Undershoot20.524.3%41.1417.8%82.1633.7%164.2647.3%

Read down that table. Between order 2 and order 16, the impulse response gets eight times longer and the undershoot goes from 4% to nearly half the peak. That is the bill for a steeper knee.

Which reframes something that can look like conservatism in the standard. J211 specifies a two-pole section, and a two-pole section looks almost quaint next to what modern software will happily design for you. It is a deliberate choice: enough selectivity to satisfy the CFC corridors, and a short enough impulse response that a 6 ms shock pulse survives it. The committee was buying time-domain behavior, and they were right to.

One more note on this slide, and it matters if you're writing software rather than using it. If a tool lets a user pick the order and still applies forward-backward filtering, the net −3 dB point moves downward — to about 0.80 times the design frequency at order 2, about 0.90 at order 4, about 0.95 at order 8. The compensation factor is the reciprocal of that shift. Which means the famous 2.0775 constant is not universal. It belongs specifically to the J211 two-pole-per-pass formulation: 5/3, to convert the CFC number to the intended cutoff, divided by 0.8022, to undo the second pass. Change the order and you must change the constant.

Slide 20 · Two filters, not one — guard filter versus analysis filter

These get confused constantly, and they do completely different jobs.

The guard filter lives inside decimation. Its only job is to stop anything too fast for the new sample rate from folding into a lie. It's chosen from the new sample rate — not from your question, not from a standard, from arithmetic. And it's applied zero-phase like everything else.

The analysis filter comes after thinning. Its job is to separate the impact you care about from residual ringing. It's chosen from the question: which CFC class, are you after a peak, are you after delta-V. And it's zero-phase so the peak stays where the physics put it.

Guard before the thinning. Analysis after. Say it in that order and it will never confuse you again.

Slide 21 · The industry standard — SAE J211 Channel Frequency Classes

Four classes.

Class−3 dB pointStopbandMin. sample rateTypical useCFC 60~100 Hz30 dB600 HzVehicle structural accelerations, barrier forceCFC 180300 Hz30 dB1.8 kHzIntegrations, spine accelerationsCFC 6001,000 Hz40 dB6 kHzComponent analysis, neck momentsCFC 10001,650 Hz40 dB10 kHzHead, rib and sternum accelerations

Notice the pattern in the sample rates: each minimum is ten times the CFC number. That's the same "ten times is the engineering" rule from slide 4, written into a standard.

The note at the bottom is the implementation. A two-pole Butterworth run forward and backward gives the four-pole phaseless CFC response, and the 2.0775 factor pre-compensates both passes so the net −3 dB point lands at 5/3 of the CFC number after the second pass. If you implement the standard and forget the second pass is coming, your cutoff is in the wrong place and everything downstream inherits it.

Two more things J211 asks of you that aren't on the slide but belong in your head. Analog anti-alias filtering still happens before sampling; digital CFC filtering is applied afterward. And filtering must be performed before any non-linear operation — resultants, injury criteria, anything where you square or take a maximum. Filter first, combine second. Combine first and you've filtered something that was never a signal.

Slide 22 · Consequences — smearing and the derivative ladder

Every real magnitude response has a soft knee, so its impulse response has non-zero duration, and that duration is the smear. Higher order buys frequency sharpness by lengthening it. Short shock pulses suffer most, because the smear is a larger fraction of the event.

Now the ladder itself, which is really a table about how badly each metric cares.

Velocity change — delta-V — is an integration. Integration divides ringing by frequency, so 22 kHz fuzz gets divided into near-irrelevance. Delta-V is robust. You can compute it on a fairly dirty record and be right.

The shock response spectrum, read in band, applies a single-degree-of-freedom oscillator that weights content according to its natural frequency and its damping. Robust in band, which is the important qualifier.

Peak acceleration involves no operation at all — you read the raw number. So it takes the ringing at full amplitude. High sensitivity. Always state the class.

And peak jerk is a differentiation, which multiplies by frequency. 22 kHz of ringing gets amplified relative to a 150 Hz pulse by a factor of well over a hundred. Severe. Unusable on a raw record. If someone hands you a jerk number without a filter class attached, they have handed you a number about their mesh.

The line at the bottom deserves emphasis. CFC 60 and CFC 1000 applied to the same drop can differ by a factor of several — and both are correct under J211. The class is not metadata. The class is part of the number.

Slide 23 · Comparison — consistency between accelerometer data and explicit results

This is non-negotiable, and it's where a lot of correlation studies quietly go wrong.

Same CFC class on both channels. Same zero-phase policy — if the physical data was processed zero-phase, the simulation must be too, or you've built a timing offset into your comparison. Same units and same polarity; confirm the sign convention before you overlay anything. And document the pipeline: guard filter, analysis filter, order, decimation ratio. All four belong in the report.

I've watched teams spend weeks chasing a physics discrepancy that was a filtering discrepancy. The test house ran CFC 600 with a causal filter because that's what the DAQ did in real time. The analyst ran CFC 600 zero-phase because that's what the post-processor defaults to. Same class, same nominal cutoff, and the curves wouldn't line up. Nobody was wrong. Nobody had written it down.

Slide 24 · Next steps — three open investigations

These are genuinely open; I don't have finished answers, and I'd welcome company on any of them.

First, CFL as a diagnostic. Map the time-step distribution across the run. Correlate where the step shrinks with where contact engages or elements distort. Turn the solver's breathing, which we currently discard as a nuisance, into a mesh and contact health metric.

Second, SRS oscillator lag. Quantify the phase lag of the ramp-invariant oscillator coefficients — the Smallwood formulation — document it properly, and be explicit that you must never zero-phase the oscillator. The lag is physics, and I'd like the size of it written down rather than assumed.

Third, the Mesh Song spectrum. Build a lightweight pre-filter spectral report — dominant peak frequencies, band energy ratios, an effective modal density — and attach it to the cleaned record as a mesh health stamp. It costs almost nothing, and it captures information at the only moment it exists, right before the analysis filter throws it away forever.

Slide 25 · The great listener — when the noise is also a message

A good listener sees the message and is not bothered by the noise. A great listener turns to the noise itself and asks: why are you here? What are you trying to tell me? Because in a deterministic simulation almost nothing is truly random. Every so-called artifact has a cause. And the cause is information.

Ringing that persists says the model is elastically dominated — the energy of the impact has nowhere to die. And if the real product is damped as lightly as the model, the real product may ring too. Ringing is fatigue's favorite music.

The ringing frequency is a free mesh diagnostic — size, stiffness, and whether the mesh is even capable of answering your question.

Classifier disagreement is worth writing down. When your signal-intelligence tool calls the same record shock on one setting and random on another, that disagreement is a measurement — it tells you how thoroughly the mesh song is covering the physics.

A clock quantized to dust is a provenance message: about output precision, about units, about how far the run had already travelled before it reached you.

And clipping is an instrument confession. Flat tops mean "I ran out of range." No filter answers that. Only re-testing does.

Filter the record. Never the notebook.

Slide 26 · The bench card — seven rules, on one page, meant to be printed

  1. Every increment, always. Aliasing has no cure and leaves no evidence.

  2. Twice is the mathematics. Ten times is the engineering.

  3. Restore the clock at the finest supported physical step; interpolate with a straight line.

  4. Guard filter before the thinning. Analysis filter after. Both zero-phase.

  5. Filter forward and backward, or your peak is not where you think it is.

  6. Never quote peak g or jerk without stating the filter class and the zero-phase policy.

  7. Filter the record. Never the notebook.

Print it. Put it where the drop tower is. If the only thing that survives this walkthrough is that piece of paper on a wall, I'll consider the time well spent.

Slide 27 · The closing

A good listener hears what the system said. A great listener also hears how it said it. In that how resides the next design, the better mesh, the wiser test, and every question you didn't yet know to ask.

Methodology after Diehl, Carroll and Nagaraj. Shock response spectrum algorithms after Tom Irvine, at vibrationdata.com. The standard throughout is SAE J211, part one.

I'm Joe McFadden. Thank you for reading — and for listening well.

Have a thoughtful and wonderful day.

© 2026 Joseph P. McFadden Sr. · McFaddenCAE.com

Methodology after Diehl, Carroll & Nagaraj · SRS algorithms after Tom Irvine (vibrationdata.com) · Standard: SAE J211-1.

Previous
Previous

Listening to the Poke..